package com.hry.sunflower.controller;

import com.hry.sunflower.common.*;
import com.hry.sunflower.pojo.BaseGps;
import com.hry.sunflower.pojo.User;
import com.hry.sunflower.service.BaseGpsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

@Controller
public class GpsDataController {
    @Autowired
    private BaseGpsService baseGpsService;


    /**
     * 请求数据
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("/getGpsData")
    public ServerResponse getMap(HttpServletRequest request) {
        // 定义一个集合存储基本数据集合
        List<List<Double>> lists = new ArrayList<>();
        User user = (User) request.getSession(true).getAttribute(Constant.CURRENT_USER);
        // 根据邮箱去数据库查询GPS数据
        List<BaseGps> baseGpsList = baseGpsService.getByEmail(user.getEmail());
        // 判断查询数据是否为空
        if (baseGpsList == null && baseGpsList.isEmpty()) {
            return ServerResponse.createByErrorMessage("未查询到任何数据");
        }
        // 遍历查询出来的集合

        for (BaseGps baseGps : baseGpsList) {
            // 定义一个集合存储经纬度数据
            List<Double> LngAndLatList = new ArrayList<>();
            // 设置经度
            LngAndLatList.add(baseGps.getLng());
            // 设置维度
            LngAndLatList.add(baseGps.getLat());
            // 存放入集合中
            lists.add(LngAndLatList);
        }
        Result result = new Result();
        // 设置路线名称
        result.setName("自定义路线");
        // 设置路线数据集合
        result.setPath(lists);
        List<Result> wayList = new ArrayList();
        wayList.add(result);
        // 设置起始点样式
        Style beginPointStyle = new Style("#fff", "120%", "2px");
        IconLabel beginPointIconLabel = new IconLabel("起", beginPointStyle);
        beginPointIconLabel.setStyle(beginPointStyle);
        // 设置起始点经纬度
        List<Double> beginLngAndLat = new ArrayList<>();
        // 设置起始经度
        beginLngAndLat.add(baseGpsList.get(0).getLng());
        // 设置起始维度
        beginLngAndLat.add(baseGpsList.get(0).getLat());
        // 设置起始标记对象
        SimpleMarker beginSimpleMarker = new SimpleMarker(beginPointIconLabel, "green", beginLngAndLat);

        // 设置终点样式
        Style endPointStyle = new Style("#fff", "120%", "2px");
        // 设置终点字体样式
        IconLabel endPointIconLabel = new IconLabel("终", endPointStyle);
        endPointIconLabel.setStyle(endPointStyle);
        List<Double> endLangAndLat = new ArrayList<>();
        // 设置终点经度
        endLangAndLat.add(baseGpsList.get(baseGpsList.size() - 1).getLng());
        // 设置终点维度
        endLangAndLat.add(baseGpsList.get(baseGpsList.size() - 1).getLat());
        // 设置终点标记对象
        SimpleMarker endSimpleMarker = new SimpleMarker(endPointIconLabel, "red", endLangAndLat);
        // 设置起点和结束点样式集合相应体
        List fontPointList = new ArrayList();
        fontPointList.add(beginSimpleMarker);
        fontPointList.add(endSimpleMarker);
        // 设置相应体结合返回JSON数据给前台
        List newList = new ArrayList();
        // 设置起点结束点字体样式
        newList.add(fontPointList);
        // 设置路线
        newList.add(wayList);
        return ServerResponse.createBySuccess("查询成功", newList);
    }
}
